# -*- coding: utf-8 -*-
"""
Created on Sun Feb  3 16:22:13 2019
windows7
python3.6.3
Anaconda3->spyder
opencv3.4.5
代码参考《OpenCV3计算机视觉 Python语言实现》（第二版）
@author: Administrator
"""

import cv2
import numpy as np
from scipy import ndimage

print(cv2.__version__)                    # 查看opencv的版本

img = cv2.imread('pycv.png',cv2.IMREAD_GRAYSCALE) #以灰度图形式读入图片，cv2.IMREAD_GRAYSCALE可以用0代替
'''3x3的卷积核'''
#数组里的数加起来和为0
kernel_3x3 = np.array([[-1,-1,-1],
                       [-1, 8,-1],
                       [-1,-1,-1]])
'''5x5的卷积核'''
#数组里的数加起来和为0
kernel_5x5 = np.array([[-1,-1,-1,-1,-1],
                       [-1, 1, 2, 1,-1],
                       [-1, 2, 4, 2,-1],
                       [-1, 1, 2, 1,-1],
                       [-1,-1,-1,-1,-1]])

'''对图片进行卷积'''
#convolve用于处理多维数组很方便
k3 = ndimage.convolve(img,kernel_3x3)
k5 = ndimage.convolve(img,kernel_5x5)

'''第一个参数是要处理的图像，第二个是高斯内核大小与卷积核类似，0是高斯核在x、y方向上的处理时的标准差'''
blurr = cv2.GaussianBlur(img,(11,11),0) # 对图片进行高斯模糊
g_hgf = img -blurr                      # 提取图片边缘

#显示处理后的图像
cv2.imshow('3x3',k3)
cv2.imshow('5x5',k5)
cv2.imshow('img',img)
cv2.imshow('g',g_hgf)
cv2.waitKey()
cv2.destroyAllWindows()